'''
Created on 03/05/2013

@author: jean
'''
from pm.database import db
from sqlalchemy import ForeignKey

class Atributos(db.Model):
    '''
    Clase que representa los atributos de un tipo de item
    '''
    __tablename__ = 'atributos'
    
    id_atributo = db.Column(db.Integer, primary_key=True, nullable=False)
    '''
       PrimaryKey de la tabla
    '''
    nombre_atributo= db.Column(db.String, nullable=False)
    '''
       Codigo del tipo de item
    '''
    tipo = db.Column(db.String(50), nullable=False)
    '''
       Tipo de atributo
    '''
    activo = db.Column(db.Boolean, nullable=False)
    '''
       Indica si el el registro se encuentra activo
    '''
    id_tipo_item = db.Column(db.Integer, ForeignKey('tipo_item.id_tipo_item'), nullable=False)
    valor = db.Column(db.String, nullable=False)
    
    def __init__(self,nombre_atributo, tipo,id_tipo_item, valor,activo = True):
        '''
        @param nombre_atributo: nombre del atributo
        @param tipo: tipo del atributo
        @param activo: si esta asociacion se encuentra activa o no 
        '''
        self.nombre_atributo = nombre_atributo
        self.tipo = tipo
        self.id_tipo_item = id_tipo_item
        self.valor = valor 
        self.activo = activo
    
    def __repr__(self):
        return '{id_atributo:%s, nombre_atributo:%s, tipo:%s, activo:%s }' % (self.id_atributo, self.nombre_atributo, self.tipo, self.activo)
    
    def __json__(self):
        '''
         devuelve el json que representa a Atributos
        '''
        return {'id':self.id_atributo, 
                'nombre_atributo': self.nombre_atributo, 
                'tipo': self.tipo,
                'id_tipo_item': self.id_tipo_item,
                'valor': self.valor,
                'activo': self.activo
                }